package com.qianji.petmall.order.controller;

import com.alipay.api.AlipayApiException;
import com.qianji.petmall.order.service.OrderService;
import com.qianji.petmall.order.vo.PayAsyncVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import java.io.UnsupportedEncodingException;

/**
 * @author liang zai
 * @date 2022/5/19 15:25
 * @description
 */
@RestController
public class PayCallbackController {

    @Autowired
    private OrderService orderService;

    @PostMapping("/pay/alipay")
    public String pay(PayAsyncVo payAsyncVo, HttpServletRequest request) throws AlipayApiException, UnsupportedEncodingException {
        //程序执行完后必须打印输出“success”（不包含引号）。
        // 如果商户反馈给支付宝的字符不是 success 这7个字符，支付宝服务器会不断重发通知，直到超过 24 小时 22 分钟。
        // 一般情况下，25 小时以内完成 8 次通知（通知的间隔频率一般是：4m,10m,10m,1h,2h,6h,15h）。
        boolean b = orderService.aliAsyncNotify(payAsyncVo, request);
        if (b){
            //验签通过放行
            return "success";
        }else {
            //验签不通过
            return "error";
        }
    }
}
